#ifndef FIR_FIRPLAYER_H_
#define FIR_FIRPLAYER_H_

#include "firchesstype.h"
#include "firmove.h"
#include "firrenderer.h"
#include "iaiplugin.h"

typedef unsigned char Byte;

#define MSG_CHESSDOWN WM_USER+1

class FIRPlayer {
public:
    virtual FIRMove GenerateMove(Byte matrix[15][15]) = 0;
    FIRChessType GetChessType();

protected:
    FIRChessType sign;

};

class FIRPersonPlayer : public FIRPlayer {
public:
    FIRPersonPlayer(FIRChessType t);
    virtual FIRMove GenerateMove(Byte matrix[15][15]);

private:
    FIRPersonPlayer();

};

class FIRComputerPlayer : public FIRPlayer {
private:
    IAIPlugin*		ai_plugin;

public:
    FIRComputerPlayer(FIRChessType t);
    ~FIRComputerPlayer();
    virtual FIRMove GenerateMove(Byte matrix[15][15]);
    void			SetAIPlugin(IAIPlugin* plugin);

private:
    FIRComputerPlayer();

};

class FIRNetworkPlayer : public FIRPlayer {
public:
    FIRNetworkPlayer(FIRChessType t);
    virtual FIRMove GenerateMove(Byte matrix[15][15]);
private:
    FIRNetworkPlayer();

};

#endif // FIR_FIRPLAYER_H_